package com.反射;

/**
 * @Author CT
 * @Date 2021/6/16 10:58 下午
 */

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Properties;

/**
 * 练习2：通过配置文件运行类中的方法
 */
public class ReflectTest02 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, IOException, ClassNotFoundException, InstantiationException {
        /*
         * class.txt
         * className=xxx
         * methodName=xxx
         * */

        //加载数据
        Properties prop = new Properties();
        FileReader fr = new FileReader("/Users/CT/IdeaProjects/untitled/src/com/反射/class.txt");
        prop.load(fr);
        fr.close();

        //获取配置文件的值
        String className = prop.getProperty("className");
        String methodName = prop.getProperty("methodName");

        //通过反射使用
        //获取class对象
        Class<?> c = Class.forName(className);
        //获取无参构造方法
        Constructor<?> con = c.getConstructor();
        //创建对象
        Object obj = con.newInstance();
        //获取成员方法
        Method m = c.getMethod(methodName);
        m.invoke(obj);


    }
}
